﻿namespace PortableRiotGames.Fluent.Stats
{
    using PortableRiotGames.Interfaces.Stats;
    using System;
    using System.ComponentModel;

    public class StatsBuilderHandler
    {
        /// <summary>
        /// Get player stats summaries by summoner ID. One summary is returned per queue type.
        /// </summary>
        /// <param name="summonerID">ID of the summoner for which to retrieve player summaries.</param>
        /// <returns></returns>
        public RiotGamesGenericBuilder<GetSummaryRequest, GetSummaryResponse> GetSummary(long summonerID)
        {
            return new RiotGamesGenericBuilder<GetSummaryRequest, GetSummaryResponse>(new GetSummaryRequest(RiotGamesWebAPI.DeveloperKey) { SummonerID = summonerID });
        }

        /// <summary>
        /// Get ranked stats by summoner ID. Includes statistics for Twisted Treeline and Summoner's Rift.
        /// </summary>
        /// <param name="summonerID">ID of the summoner for which to retrieve ranked stat summaries.</param>
        /// <returns></returns>
        public RiotGamesGenericBuilder<GetRankedRequest, GetRankedResponse> GetRanked(long summonerID)
        {
            return new RiotGamesGenericBuilder<GetRankedRequest, GetRankedResponse>(new GetRankedRequest(RiotGamesWebAPI.DeveloperKey) { SummonerID = summonerID });
        }

        #region Hidden

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }

        [EditorBrowsable(EditorBrowsableState.Never)]
        public new Type GetType()
        {
            return this.GetType();
        }

        [EditorBrowsable(EditorBrowsableState.Never)]
        public override string ToString()
        {
            return base.ToString();
        }

        #endregion Hidden
    }
}
